|  | 
|  | 
| вернуться в форум | WA #2 ? please, give me any test for WA #2WA#2 I'm sick of it. Please explain it to me. I'm getting WA2. What am I doing wrong?  This is my code: #include "stdio.h"Edited by author 26.10.2011 01:51#include "algorithm"
 #include "string.h"
 
 struct time
 {
 double s, os; //os - original time
 // s - finish time (+id*30)
 char name[21];
 int I;
 time(const double S = 0, const int id = 0)
 :s(S), I(id) {}
 void inc(const int id)
 {
 os = s;
 s += 30*id;
 }
 };
 
 int cmp(const void* a, const void* b)
 {
 return ( ((time*)a)->s > ((time*)b)->s );
 }
 
 int cmp2(const void* a, const void* b)
 {
 return strcmp(((time*)a)->name, ((time*)b)->name);
 }
 
 int cmp3(const void* a, const void* b)
 {
 return ( ((time*)a)->os < ((time*)b)->os );
 }
 
 int main()
 {
 int n;
 scanf("%d\n", &n);
 
 time* ts = new time[n+1];
 time* ans = new time[n+1];
 int m;
 float t;
 for(int i=0; i<n; i++)
 {
 scanf("%s %d:%f\n", ts[i].name, &m, &t );
 ts[i].s = t + m * 60;
 ts[i].inc(i);
 }
 
 std::qsort(&ts[1], n-1, sizeof(time), cmp);
 int j=0;
 ans[j++] = ts[0];
 for(int i=1; i<n; i++)
 {
 if( cmp3( &ts[i], &ans[j-1])  ) ans[j++] = ts[i];
 }
 std::qsort(ans,j,sizeof(time),cmp2);
 printf("%d\n",j);
 for(int i=0;i<j;i++) printf("%s\n", ans[i].name);
 
 delete[] ans;
 delete[] ts;
 return 0;
 }
 | 
 | 
|