提出 #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;
}

提出情報

提出日時
問題 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
結果
AC × 12
セット名 テストケース
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