This is my code ,I don't think it's wrong ,could you help me checking it?
#include<iostream>
#include<string>
#include<memory>
#include<cstdio>
#include<cstring>
using namespace std;
//#define DEBUG
#ifndef DEBUG
FILE *fin=stdin;
#else
FILE *fin=fopen("1151.txt","r");
#endif
const long maxm=20;
const long maxn=11;
const long maxint=200;
//long map[maxn];
struct node{
long map,minx,miny,maxx,maxy;
}list[maxn];
long n=0,m;
long insert(long x)
{
long i;
for(i=0;i<n;++i){
if(list[i].map==x)return i;
}
list[n].map=x;
list[n].minx=list[n].miny=1;
list[n].maxx=list[n].maxy=200;
++n;
return n-1;
}
void read()
{
long x,y,a,b;
char ch;
fscanf(fin,"%ld,%ld",&x,&y);
//cin>>x>>ch>>y;
//cin.get(ch);
ch=getc(fin);
long i;
while(ch!='\n'){
fscanf(fin,"%ld-%ld",&a,&b);
//cin>>a>>ch>>b;
i=insert(a);
if(x+b<list[i].maxx)list[i].maxx=x+b;
if(x-b>list[i].minx)list[i].minx=x-b;
if(y+b<list[i].maxy)list[i].maxy=y+b;
if(y-b>list[i].miny)list[i].miny=y-b;
if(fscanf(fin,"%c",&ch)==-1)break;
//cin.get(ch);
//if(cin.fail())break;
}
}
int par(int p,int r)
{
node temp=list[p];
while(p<r){
while(p<r&&list[r].map>=temp.map)--r;
list[p]=list[r];
while(p<r&&list[p].map<=temp.map)++p;
list[r]=list[p];
}
list[p]=temp;
return p;
}
void qsort(int p,int r)
{
if(p<r){
int q=par(p,r);
qsort(p,q-1);
qsort(q+1,r);
}
}
int main(void)
{
fscanf(fin,"%ld",&m);
while(m>0){
read();
--m;
}
qsort(0,n-1);
for(long i=0;i<n;++i){
if(list[i].minx==list[i].maxx&&list[i].miny==list[i].maxy){
//printf("%ld:%ld,%ld\n",list[i].map,list[i].maxx,list[i].maxy);
cout<<list[i].map<<':'<<list[i].maxx<<','<<list[i].maxy<<endl;
}
else{
//printf("%ld:UNKNOWN\n",list[i].map);
cout<<list[i].map<<":UNKNOWN"<<endl;
}
}
return 0;
}