Submission #107526

#TimeUsernameProblemLanguageResultExecution timeMemory
107526kyunamkSeats (IOI18_seats)C++14
11 / 100
4096 ms32612 KiB
#include "seats.h" #include <utility> #include <iostream> using namespace std; std::vector<int> r; std::vector<int> c; std::vector< pair<int,int> > pos; int K; // int debug = true; //false; int debug = false; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { r = R; c = C; K = R.size(); for ( int i = 0 ; i < K ; i++) { // if( debug ) cout << R[i] << C[i] << endl; pos.push_back(make_pair(R[i],C[i])); } // debug = true; } int r1,r2,c1,c2; static inline int add_rect( int r, int c) { int changed = 0; if ( r >= r1 && r <= r2 && c >= c1 && c <= c2) changed = 0; else { if ( r < r1 ) r1 = r; else if( r > r2 ) r2 = r; if ( c < c1 ) c1 = c; else if( c > c2 ) c2 = c; changed = 1; } return changed ; } int swap_seats(int a, int b) { if( debug ) cout << "Swap : " << a << b << endl; pair<int,int> t = pos[b]; pos[b]=pos[a]; pos[a]=t; r1=r2=pos[0].first; c1=c2=pos[0].second; int cnt = 0; if( debug ) cout << 0 << r1 << r2 << c1 << c2 << endl; for( int i =0 ; i < K ; i++ ) { int changed = add_rect( pos[i].first , pos[i].second ) ; if( debug ) { cout << i << changed << r1 << r2 << c1 << c2 << endl; } if ( (r2-r1+1)*(c2-c1+1) == i+1 ) { if( debug ) cout << "BRect " << i+1 << endl; cnt++; } else { // int j , k ; // k = (r2-r1+1)*(c2-c1+1); // for( j =i ; j < k-1 ; j++ ) { // if ( add_rect( pos[i].first , pos[i].second ) ) // k = (r2-r1+1)*(c2-c1+1); // } // i=j; } } return cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...