提出 #81643
ソースコード 拡げる
// include {{{
#include <cstdio>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
//#include <deque>
#include <stack>
#include <queue>
//#include <map>
#include <set>
#include <algorithm>
#include <cmath>
#include <numeric>
//#include <complex>
// }}}
using namespace std;
// macro {{{
typedef long long ll;
typedef vector<int> vec;
typedef vector<vec> mat;
typedef pair<int,int> P;
#define rep(i,n) for(int i=0,__end=(n);i<__end;++i)
#define REP(i,j,k) for(int i=j,__end=(k);i<__end;++i)
//#define foreach(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)
#define all(c) (c).begin(),(c).end()
#define rall(c) (c).rbegin(),(c).rend()
#define priority_queue_greater(T) priority_queue< T, vector<T>, greater<T> >
#define F first
#define S second
// BEGIN CUT HERE {{{
// convert {{{
template<typename T> T fromString(string& s){
T res;
std::istringstream is(s);
is >> res;
return res;
}
template<typename T> string toString(T& v){
stringstream ss;
ss << v;
return ss.str();
} // }}}
// inspect {{{
string inspect( string str );
template<typename T> string inspect( T v );
template<typename T,typename U> string inspect( pair<T,U> v );
template<typename T> string inspect( vector<T> v );
string inspect( string str ){
return "\"" + str + "\"";
}
template<typename T> string inspect( T v ){
return toString<T>( v );
}
template<typename T,typename U> string inspect( pair<T,U> v ){
return "(" + inspect(v.first) + "," + inspect(v.second) + ")";
}
template<typename T> string inspect( vector<T> v ){
string res = "[";
rep(i,v.size()){
if( i != 0 ){ res += ","; }
res += inspect( v[i] );
}
return res + "]";
}
// }}}
// puts {{{
template<typename T> void puts( T val ){
cout << inspect(val) << endl;
}
template<typename T> void puts( string name, T val ){
cout << name << ": " << inspect(val) << endl;
}
// }}}
// END CUT HERE }}}
// }}}
int all, n, m;
int main(){
while( cin >> all >> n >> m ){
vec hits(n), qx(m), qy(m);
rep(i,n){ scanf("%d", &hits[i]); }
rep(i,m){ scanf("%d %d", &qx[i], &qy[i]); }
//puts(hits); puts(qX); puts(qY);
sort(all(hits));
vec diff(n,0);
rep(i,n-1){ diff[1+i] = hits[i+1] - hits[i]; }
sort(all(diff));
//puts(diff);
vec diffSum(n,0);
REP(i,1,n){ diffSum[i] = diffSum[i-1] + diff[i]; }
//puts(diffSum);
rep(i,m){
int sum = qx[i] + qy[i] + 1;
int ub = upper_bound( all(diff), sum ) - diff.begin();
int ans = diffSum[ub-1];
ans += (n - ub + 1) * sum;
ans -= max(0, qx[i] - hits[0] + 1);
ans -= max(0, qy[i] - (all - hits[n-1]));
cout << ans << endl;
}
}
return 0;
}
提出情報
提出日時
2013-06-16 21:37:22+0900
問題
D - grepマスター
ユーザ
jimon
言語
C++ (GCC 4.4.7)
得点
100
コード長
2784 Byte
結果
AC
実行時間
499 ms
メモリ
3636 KiB
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:82: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:83: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
ジャッジ結果
セット名
All
得点 / 配点
100 / 100
結果
セット名
テストケース
All
00_sample_01.txt, 00_sample_02.txt, 01_min.txt, 02_rand_00.txt, 02_rand_01.txt, 02_rand_02.txt, 03_randp_00.txt, 03_randp_01.txt, 03_randp_02.txt, 04_maxrandp_00.txt, 04_maxrandp_01.txt, 04_maxrandp_02.txt
ケース名
結果
実行時間
メモリ
00_sample_01.txt
AC
20 ms
788 KiB
00_sample_02.txt
AC
20 ms
792 KiB
01_min.txt
AC
19 ms
780 KiB
02_rand_00.txt
AC
256 ms
2360 KiB
02_rand_01.txt
AC
388 ms
2812 KiB
02_rand_02.txt
AC
87 ms
1204 KiB
03_randp_00.txt
AC
253 ms
2316 KiB
03_randp_01.txt
AC
415 ms
3132 KiB
03_randp_02.txt
AC
469 ms
2992 KiB
04_maxrandp_00.txt
AC
499 ms
3632 KiB
04_maxrandp_01.txt
AC
498 ms
3572 KiB
04_maxrandp_02.txt
AC
499 ms
3636 KiB